/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package asja.formulario;

import asja.dao.FuncionarioDao;
import asja.excecoes.ValorInvalido;
import asja.modelo.FuncionarioModelo;
import asja.outras.Conversoes;
import asja.outras.LimpaTela;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.*;
import javax.swing.JPopupMenu.*;

/**
 *
 * @author Alice
 */
public class CadastroFuncionarioFormulario extends JFrame{
    
    private JMenuBar BarraMenu;
    private JMenu jMnu_Ajuda, jMnu_Ficheiro;
    private JMenuItem gravar, visualizar, sair;
    private Separator separador1,separador2;
    private JLabel jlbl_img, lbl_foto;
    private JLabel lbl_informacao, lbl_nome,lbl_sexo, lbl_cpf, lbl_rg,lbl_dianascimento, lbl_mesnascimento, lbl_anonascimento,lbl_diacadastro, lbl_mescadastro, lbl_anocadastro, lbl_estado,lbl_cidade,lbl_bairro,lbl_complemento,lb_endereco,lbl_telefone, lbl_email, lbl_estadocivil, lbl_datanascimento,lbl_datacadastro, lbl_cep, lbl_cargo ;  
    public JTextField jtf_nome, jtf_cpf, jtf_rg,jtf_bairro,jtf_endereco,jtf_telefone,jtf_email,jtf_cidade, jtf_cep, jtf_complemento , jtf_cargo;  
    public JComboBox jCb_estado, jCb_sexo, jCb_estadocivil, jCb_dianascimento,jCb_mesnascimento, jCb_anonascimento, jCb_diacadastro,jCb_mescadastro, jCb_anocadastro;
    public JButton bt_ok,bt_cancelar, bt_limpar;
    public JButton bt_ok1;
    Vector <Integer> vetor_anonascimento;
    Vector <Integer> vetor_dianascimento;
    Vector <Integer> vetor_anocadastro;
    Vector <Integer> vetor_diacadastro;
    
     public CadastroFuncionarioFormulario() 
    {        
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        this.setTitle("Cadastro");  
        this.setSize(700, 500); 
        this.setResizable(false); 
        this.setLocationRelativeTo(null);  

    } 
     
     
     public void criajanela_cadastro(){
        
         //instanciando os objetos
        BarraMenu= new JMenuBar();        
        jMnu_Ficheiro = new JMenu("Ficheiro");
        jMnu_Ajuda = new JMenu("Ajuda"); 
        separador1 = new Separator();
        separador2 = new Separator();
        jlbl_img= new JLabel();
        lbl_foto= new JLabel();
        lbl_informacao= new JLabel();
        visualizar= new JMenuItem("Visualizar");
        gravar= new JMenuItem("Novo");
        sair= new JMenuItem("Sair");
        lbl_nome = new JLabel(" * Nome "); 
        lbl_sexo = new JLabel("*Sexo "); 
        lbl_rg = new JLabel("*RG ");
        lbl_dianascimento = new JLabel("Dia"); 
        lbl_mesnascimento = new JLabel("Mes"); 
        lbl_anonascimento= new JLabel("Ano"); 
        lbl_diacadastro = new JLabel("Dia"); 
        lbl_mescadastro = new JLabel("Mes"); 
        lbl_anocadastro= new JLabel("Ano"); 
        lbl_cpf = new JLabel(" *CPF "); 
        lbl_cep = new JLabel("CEP "); 
        lbl_estado = new JLabel("*Estado "); 
        lbl_cidade = new JLabel("*Cidade "); 
        lbl_bairro = new JLabel("*Bairro "); 
        lb_endereco = new JLabel("*Endereço "); 
        lbl_telefone = new JLabel("*Telefone "); 
        lbl_email = new JLabel("Email "); 
        lbl_estadocivil= new JLabel(" Estado Civil "); 
        lbl_datanascimento = new JLabel("* Data de Nascimento  "); 
        lbl_datacadastro = new JLabel(" Data de Cadastro "); 
        lbl_complemento = new JLabel("Complemento "); 
        lbl_cargo = new JLabel("*Cargo "); 
        jtf_nome = new JTextField("", 50); 
        jtf_rg = new JTextField("", 10);  
        jtf_cpf = new JTextField("", 13);
        jtf_cep = new JTextField("", 8);
        jtf_cidade = new JTextField("", 10);
        jtf_bairro=new JTextField("", 13);
        jtf_endereco=new JTextField("", 15);
        jtf_complemento=new JTextField("", 8);
        jtf_telefone= new JTextField("", 15);
        jtf_email= new JTextField("", 30);
        jtf_cargo= new JTextField("", 15);
        jCb_estado= new JComboBox();
        jCb_sexo= new JComboBox();
        jCb_estadocivil= new JComboBox();
        jCb_mesnascimento= new JComboBox();        
        jCb_diacadastro= new JComboBox();
        jCb_mescadastro= new JComboBox();
        jCb_anocadastro= new JComboBox();
        bt_ok= new JButton("Ok");
        bt_ok1= new JButton("Okkkk");
        bt_limpar= new JButton("Limpar");
        bt_cancelar= new JButton("Cancelar");
        vetor_anonascimento=new Vector<Integer>();
        vetor_dianascimento=new Vector<Integer>();
        vetor_anocadastro=new Vector<Integer>();
        vetor_diacadastro=new Vector<Integer>();
        
        lbl_foto.setFont(new Font("Calisto MT", 1, 36)); // NOI18N
        lbl_foto.setText("FOTO");
        lbl_foto.setOpaque(true);
        lbl_foto.setBackground(Color.yellow);
        lbl_foto.setMinimumSize(new Dimension(20,20));
        
        lbl_informacao.setFont(new java.awt.Font("Calisto MT", 1, 13)); // NOI18N
        lbl_informacao.setForeground(new java.awt.Color(255, 0, 0));
        lbl_informacao.setText("* Campos com preenchimento obrigatório");
        
       // lbl_informacao.setFont(null);
        
  
         // Adicionando o itens  ao menu ficheiro
        jMnu_Ficheiro.add(gravar);
        jMnu_Ficheiro.add(visualizar);
        jMnu_Ficheiro.add(separador1);
        jMnu_Ficheiro.add(sair);
             
        BarraMenu.add(jMnu_Ficheiro);        
        BarraMenu.add(jMnu_Ajuda);
        this.setJMenuBar(BarraMenu);
       
        
        //painel para os dados de identificação do usuário
        final JPanel painel_dados1 = new JPanel();  
        painel_dados1.setLayout(new GridBagLayout());     
       
        
        painel_dados1.add(lbl_nome, parametro(0, 0, 2, 1));
        painel_dados1.add(jtf_nome, parametro(0, 2, 10, 1));
        
        painel_dados1.add(lbl_sexo, parametro(1, 0, 2, 1));
        painel_dados1.add(jCb_sexo, parametro(1, 2, 4, 1));
        jCb_sexo.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
            "Feminino","Masculino"}));
        
        painel_dados1.add(lbl_estadocivil, parametro(1, 6, 2, 1));
        painel_dados1.add(jCb_estadocivil, parametro(1, 8, 4, 1));
        jCb_estadocivil.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
            "Solteiro","Casado","Separado","Divorciado"}));
        
       painel_dados1.add(lbl_rg, parametro(2, 0, 2, 1));
       painel_dados1.add(jtf_rg, parametro(2, 2, 4, 1));
        
       painel_dados1.add(lbl_cpf, parametro(2, 6, 2, 1));
       painel_dados1.add(jtf_cpf, parametro(2, 8, 4, 1));
       
       painel_dados1.add(lbl_datanascimento, parametro(3, 0,6, 1));
     
       //Configurando as comboboxs
       
      //v recebera valores de 1900 a 2010. O método add é da classe Vector.
        for (int i=1900; i<=1993; i++)
		 vetor_anonascimento.add(i);
       jCb_anonascimento= new JComboBox(vetor_anonascimento);
       painel_dados1.add(lbl_anonascimento, parametro(3, 6, 1, 1));
       painel_dados1.add(jCb_anonascimento, parametro(3, 7, 1, 1));
              
       painel_dados1.add(lbl_mesnascimento, parametro(3, 8, 1, 1));
       painel_dados1.add(jCb_mesnascimento, parametro(3, 9, 1, 1));
       jCb_mesnascimento.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
           "Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}));
       
       
       for (int i=1; i<=31; i++)
		 vetor_dianascimento.add(i);
       jCb_dianascimento= new JComboBox(vetor_dianascimento);
       painel_dados1.add(lbl_dianascimento, parametro(3, 10, 1, 1));
       painel_dados1.add(jCb_dianascimento, parametro(3, 11, 1, 1));
       
       
       //painel para os dados de endereço do usuario
       final JPanel painel_endereco = new JPanel();  
       painel_endereco.setLayout(new GridBagLayout()); 
       painel_endereco.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Endereço do Usuário"));
        
      painel_endereco.add(lb_endereco, parametro(0, 0, 1, 1));
       painel_endereco.add(jtf_endereco, parametro(0, 1, 8, 1));
       
       painel_endereco.add(lbl_complemento, parametro(0, 9, 2, 1));
       painel_endereco.add(jtf_complemento, parametro(0, 11, 1, 1));
       
       painel_endereco.add(lbl_bairro, parametro(1, 0, 1, 1));
       painel_endereco.add(jtf_bairro, parametro(1, 1, 3, 1)); 
       
       painel_endereco.add(lbl_cidade, parametro(1, 5, 1, 1));
       painel_endereco.add(jtf_cidade, parametro(1, 6, 2, 1));
       
       painel_endereco.add(lbl_estado, parametro(1, 8, 1, 1));
       painel_endereco.add(jCb_estado, parametro(1, 9, 1, 1));
       jCb_estado.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
            "Acre","Alagoas","Amapá","Amazonas", "Bahia","Ceará","Distrito Federal","Espírito Santo","Goiás","Maranhão","Mato Grosso","Mato Grosso do Sul","Minas Gerais","Pará","Paraíba","Paraná","Pernambuco","Piauí","Rio de Janeiro","Rio Grande do Norte","Rio Grande do Sul","Rondônia","Roraima","Santa Catarina","São Paulo","Sergipe","Tocantins",}));
       
             
       painel_endereco.add(lbl_cep, parametro(1, 10, 1, 1));
       painel_endereco.add(jtf_cep, parametro(1, 11, 1, 1));
       
         
       //painel que vai conter outros dados
       final JPanel painel_outros= new JPanel();
       painel_outros.setLayout(new GridBagLayout()); 
       painel_outros.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Outras informações"));
      
       painel_outros.add(lbl_telefone, parametro(0, 0, 2, 1));
       painel_outros.add(jtf_telefone, parametro(0, 2, 3, 1));
        
       painel_outros.add(lbl_email, parametro(0, 5, 1, 1));
       painel_outros.add(jtf_email, parametro(0, 6, 6, 1));
        
       painel_outros.add(lbl_cargo, parametro(1, 0, 2, 1));
       painel_outros.add(jtf_cargo, parametro(1, 2, 2, 1));
        
       painel_outros.add(lbl_datacadastro, parametro(1,4,2,1));
       
      
       for (int i=1900; i<=1993; i++)
		 vetor_anocadastro.add(i);
       jCb_anocadastro= new JComboBox(vetor_anocadastro);
       painel_outros.add(lbl_anocadastro, parametro(1, 6, 1, 1));
       painel_outros.add(jCb_anocadastro, parametro(1, 7, 1, 1));
        
       
       painel_outros.add(lbl_mescadastro, parametro(1, 8, 1, 1));
       painel_outros.add(jCb_mescadastro, parametro(1, 9, 1, 1));
       jCb_mescadastro.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
           "Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}));
       
        for (int i=1; i<=31; i++)
		 vetor_diacadastro.add(i);
       jCb_diacadastro= new JComboBox(vetor_diacadastro);
       painel_outros.add(lbl_diacadastro, parametro(1, 10, 1, 1));
       painel_outros.add(jCb_diacadastro, parametro(1, 11, 1, 1));
       painel_outros.add(lbl_informacao, parametro(2, 1, 12, 1));
      
        //painel para a foto
       JPanel painel_foto= new JPanel();
       painel_foto.setLayout(new BorderLayout());
       painel_foto.add(lbl_foto, BorderLayout.CENTER); 
       
       //Painel identificação que vai conter um painel para fotos e outro para nome
       JPanel painel_identificacao= new JPanel();
       painel_identificacao.setLayout(new BorderLayout());
       painel_identificacao.add(painel_foto, BorderLayout.EAST);
       painel_identificacao.add(painel_dados1, BorderLayout.WEST);
       painel_identificacao.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Identificação do Usuário"));

       //painel dados que vai conter o painel de identificacao, painel de ender~ço e painel para outras informações
       JPanel painel_dados= new JPanel();
       painel_dados.setLayout(new BorderLayout());
       painel_dados.add(painel_identificacao, BorderLayout.NORTH);
       painel_dados.add(painel_endereco, BorderLayout.CENTER);
       painel_dados.add(painel_outros, BorderLayout.SOUTH);
     
      //Painel cabecalho
       JPanel painel_cabecalho = new JPanel();         
       painel_cabecalho.setLayout(new BorderLayout());            
       jlbl_img.setIcon(new ImageIcon("imagens\\cadastro.jpg"));
       painel_cabecalho.add(jlbl_img, BorderLayout.CENTER); 
        
       //painel para os comandos
       JPanel painel_comandos = new JPanel();         
       painel_comandos.setLayout(new FlowLayout()); 
       painel_comandos.add(bt_ok);
       bt_ok1.setVisible(false);
       painel_comandos.add(bt_ok1);
       
       painel_comandos.add(bt_limpar);
       painel_comandos.add(bt_cancelar);
  
       //painel principal que vai conter o painel do cabeçalho e o painel dos dados
        JPanel painel_principal = new JPanel();  
        painel_principal.setLayout(new BorderLayout());
        painel_principal.add(painel_cabecalho, BorderLayout.NORTH);
        painel_principal.add(painel_dados, BorderLayout.CENTER);
        painel_principal.add(painel_comandos, BorderLayout.SOUTH);
        this.getContentPane().add(painel_principal);  

       
        bt_ok.addMouseListener(new MouseAdapter() {
        @Override
            public void mouseClicked(MouseEvent evt){ 
                try {
                    gravar_cadastro();
                    JOptionPane.showMessageDialog(null, "Gravado com sucesso!!!");
                    MenuPrincipalFormulario mnu_principal = new MenuPrincipalFormulario(); 
                    mnu_principal.criajanela_menuprincipal();  
                    mnu_principal.aparencia_MenuPrincipal();
                    dispose(); 
                } catch (ValorInvalido ex) {
                    JOptionPane.showMessageDialog(CadastroFuncionarioFormulario.this, "Campos Obrigatórios vazios ou Telefone inválido", "Cadastro", JOptionPane.WARNING_MESSAGE);
                }
                     
             
            }});
        
        
        bt_cancelar.addMouseListener(new MouseAdapter() {
        @Override
            public void mouseClicked(MouseEvent evt){
            
            int i = 0;
                i= JOptionPane.showConfirmDialog(CadastroFuncionarioFormulario.this, "Tem a certeza que deseja Cancelar?", "Cadastro Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                if (i==0){
                       MenuPrincipalFormulario mnu_principal = new MenuPrincipalFormulario(); 
                       mnu_principal.criajanela_menuprincipal();  
                       mnu_principal.aparencia_MenuPrincipal();
                       dispose(); }    
              
            }});
        
        bt_limpar.addMouseListener(new MouseAdapter() {
        @Override
            public void mouseClicked(MouseEvent evt){
                LimpaTela limpar_jtf= new LimpaTela();
                     limpar_jtf.LimpaTela(painel_dados1);
                     limpar_jtf.LimpaTela(painel_endereco);
                     limpar_jtf.LimpaTela(painel_outros);
            }});
        
        visualizar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {                
                MenuPrincipalFormulario mnu= new MenuPrincipalFormulario();
                mnu.janela_visualiza();
                dispose();
                   
  
            }
        });
        
        
        pack();        
        this.setVisible(true);
        
       
        
    
    }      
        private GridBagConstraints parametro(int gridy, int gridx,int width, int height) {
        GridBagConstraints gb = new GridBagConstraints();
        gb.gridx = gridx;
        gb.gridy = gridy;
        gb.gridheight = height;
        gb.gridwidth = width;

        gb.weightx = 0;
        gb.weighty = 0;
        gb.fill = GridBagConstraints.HORIZONTAL;
       // gb.anchor = GridBagConstraints.WEST;
        
        gb.insets = new Insets(2, 2, 2, 2);

        return gb;
    }
     
     
     
     public void gravar_cadastro() throws ValorInvalido{   
           Conversoes conv= new Conversoes();
  
         try {
             
            FuncionarioModelo insere = new FuncionarioModelo();
            insere.setNome(jtf_nome.getText());                    
            insere.setRg(jtf_rg.getText());
            insere.setCpf(jtf_cpf.getText());
            insere.setEstado(jCb_estado.getSelectedItem().toString());
            insere.setCidade(jtf_cidade.getText());
            insere.setBairro(jtf_bairro.getText());
            insere.setEndereco(jtf_endereco.getText());
            
            if (jtf_telefone.getText().toString().equals("") || !(conv.IsNumeric(jtf_telefone.getText())) )
               throw new ValorInvalido(" Telefone Inválido!");  
            
            insere.setTelefone(Double.parseDouble(jtf_telefone.getText()));
            insere.setEmail(jtf_email.getText());
            insere.setEstado_civil(jCb_estadocivil.getSelectedItem().toString());
            insere.setSexo(jCb_sexo.getSelectedItem().toString());
            
            if (jtf_cargo.getText().toString().equals(""))
                throw new ValorInvalido("Cargo Inválido!"); 
            insere.setCargo(jtf_cargo.getText());
            insere.setCep(jtf_cep.getText());
            insere.setComplemento((jtf_complemento.getText()));             
            insere.setDia_nascimento(Integer.parseInt(jCb_dianascimento.getSelectedItem().toString()));
            insere.setMes_nascimento((jCb_mesnascimento.getSelectedItem().toString()));
            insere.setAno_nascimento(Integer.parseInt(jCb_anonascimento.getSelectedItem().toString()));
            insere.setDia_cadastro(Integer.parseInt(jCb_diacadastro.getSelectedItem().toString()));
            insere.setMes_cadastro(jCb_mescadastro.getSelectedItem().toString());
            insere.setAno_cadastro(Integer.parseInt(jCb_anocadastro.getSelectedItem().toString()));
 
             FuncionarioDao contr = new FuncionarioDao();
             System.out.println("depois do add "+insere.getNome()); 
             contr.adicionacadastro(insere);
            
             
           
                        
          } catch (SQLException ex) {
             System.out.println("Erroaaaaaa!!");
           

         }
     
    }
  
      public static void main(String[] args) {        
       
        CadastroFuncionarioFormulario cadastro= new CadastroFuncionarioFormulario(); 
       // cadastro.aparencia();
        cadastro.criajanela_cadastro();
       
        
  
        
    }
    
}
